layui.use(['table', 'admin', 'ax', 'func', 'layer'], function () {
    var $ = layui.$;
    var table = layui.table;
    var $ax = layui.ax;
    var admin = layui.admin;
    var func = layui.func;
    var layer = layui.layer;

    $("#returnBefore").click(function () {
        history.go(-1)
    })

    /**
     * 获取上一个页面的metadataId
     */
    var metadataId = Feng.getUrlParam("metadataId")
    var tableName = Feng.getUrlParam("tableName")


    /**
     * 生成数据库表
     */
    $("#insertDatabaseTable").click(function () {
        var ajax = new $ax(Feng.ctxPath + '/metadataCol/list?metadataId=' + metadataId);
        var result = ajax.start();
        // console.log(result.data)
        //先判断是否有字段
        if (result.data.length == 0) {
            Feng.error("表中至少要有一个字段")
            return;
        }
        //弹出弹窗是否生成
        layer.open({
            type: 1,
            title: ['生成数据库表', 'font-size:16px;text-align:center;padding: 0 0 0 0'],
            area: ['400px', '250px'],
            shade: 0.1,
            btn: ['确定', '取消'],
            btnAlign: 'c',
            moveType: 0,
            content: "<div class='layui-row' style='padding: 65px 0 0 0'><div class='layui-col-md10 layui-col-xs10 layui-col-lg10 layui-col-sm10 layui-col-md-offset1 layui-col-xs-offset1 layui-col-sm-offset1 layui-col-lg-offset1' style='text-align: center'><span style='font-size: 16px;text-align:center'>是否生成数据库表\" " + tableName + " \"</span></div></div>",
            success: function (layero) {
                var btn = layero.find('.layui-layer-btn');
                btn.find('.layui-layer-btn0').click(function () {
                    //再次询问
                    layer.open({
                        type: 1,
                        title: ['生成数据库表', 'font-size:16px;text-align:center;padding: 0 0 0 0'],
                        area: ['400px', '250px'],
                        shade: 0.1,
                        btn: ['确定', '取消'],
                        btnAlign: 'c',
                        moveType: 0,
                        content: "<div class='layui-row' style='padding: 65px 0 0 0'><div class='layui-col-md10 layui-col-xs10 layui-col-lg10 layui-col-sm10 layui-col-md-offset1 layui-col-xs-offset1 layui-col-sm-offset1 layui-col-lg-offset1' style='text-align: center'><span style='font-size: 16px;color: red;text-align:center'>是否真的生成数据库表?<br>如果数据库已存在\" " + tableName + " \"表,可能会出现预期之外的错误</span></div></div>",
                        success: function (layero) {
                            var btn = layero.find('.layui-layer-btn');
                            btn.find('.layui-layer-btn0').click(function () {
                                //发送请求生成数据库表
                                $.ajax(Feng.ctxPath + '/metadata/createTable', {
                                    data: {
                                        metadataId: metadataId,
                                        tableName: tableName
                                    },
                                    success: function (res) {
                                        // console.log(res)
                                        if (res == 1) {
                                            Feng.success("建表成功")
                                        }
                                        if (res == 3) {
                                            Feng.error("建表失败")
                                        }
                                    },
                                    error: function (res) {
                                        Feng.error("建表失败")
                                    }
                                })
                            })
                        }
                    })
                })
            }
        })
    })

    /**
     * 数据元表管理
     */
    var MetadataCol = {
        tableId: "metadataColTable"
    };

    /**
     * 初始化表格的列
     */
    MetadataCol.initColumn = function () {
        return [[
            {type: 'checkbox'},
            {field: 'metadataId', sort: false, title: '元数据编码', hide: true},
            {field: 'metadataColId', hide: true, title: '数据元编码'},
            {field: 'columnName', sort: false, title: '字段中文名'},
            {field: 'metadataColName', sort: false, title: '字段英文名'},
            {field: 'type', sort: false, title: '字段类型'},
            {field: 'metadataColNumber', sort: false, title: '数据长度'},
            {
                field: 'metadataDetailIsRequired',
                sort: false,
                title: '是否必填',
                align: "center",
                templet: function (d) {
                    if (d.isRequired == 1) {
                        return "是"
                    } else if (d.isRequired == 2) {
                        return "否"
                    }
                }
            },
            {field: 'writeType', sort: false, title: '填写格式'},
            {field: 'isDelete', sort: false, title: '是否删除；0代表删除；1代表可用', hide: true},
            {align: 'center', toolbar: '#tableBar', title: '操作', hide: true}
        ]];
    };

    /**
     * 点击查询按钮
     */
    MetadataCol.search = function () {
        var queryData = {};

        queryData['columnName'] = $("#columnName").val()


        table.reload(MetadataCol.tableId, {
            where: queryData, page: {curr: 1}
        });
    };

    /**
     * 弹出添加对话框
     */
    MetadataCol.openAddDlg = function () {
        layer.open({
            title: '添加数据元表',
            type: 2,
            area: ['80%', '80%'],
            content: Feng.ctxPath + '/metadataCol/add?metadataId=' + metadataId,
            tableId: MetadataCol.tableId,
            end: function () {
                table.reload(MetadataCol.tableId)
            }
        });
    };

    /**
     * 修改
     */
    $("#btnEdit").click(function () {
        if (ids.length != 1) {
            Feng.error("请选择一条数据")
            return;
        }
        layer.open({
            title: '修改数据元表',
            content: Feng.ctxPath + '/metadataCol/edit?metadataColId=' + ids[0],
            tableId: MetadataCol.tableId,
            type: 2,
            area: ['80%', '80%'],
            end: function () {
                table.reload(MetadataCol.tableId);
                ids = []
            }
        });
    })


    /**
     * 数据删除
     */
    $("#btnDelete").click(function () {
        if (ids.length == 0) {
            Feng.error("请至少选择一条数据")
            return;
        }
        if (ids.length == 1) {
            var operation = function () {
                $.ajax(Feng.ctxPath + '/metadataCol/deleteMetadataDetail', {
                    data: {
                        arr: ids
                    },
                    //开启序列化
                    traditional: true,
                    success: function (res) {
                        // console.log(res)
                        if (res == ids.length) {
                            Feng.success('删除成功')
                            table.reload(MetadataCol.tableId);
                        }
                    },
                    error: function () {
                        Feng.error('删除失败')
                    }
                })
            };
            Feng.confirm("是否删除这条数据?", operation);
        }
        if (ids.length > 1) {
            var operation = function () {
                $.ajax(Feng.ctxPath + '/metadataCol/deleteMetadataDetail', {
                    data: {
                        arr: ids
                    },
                    //开启序列化
                    traditional: true,
                    success: function (res) {
                        // console.log(res)
                        if (res == ids.length) {
                            Feng.success('删除成功')
                            table.reload(MetadataCol.tableId);
                        }
                    },
                    error: function () {
                        Feng.error('删除失败')
                    }
                })
            };
            Feng.confirm("是否删除这" + ids.length + "条数据?", operation);
        }
    })

    // 渲染表格
    var tableResult = table.render({
        elem: '#' + MetadataCol.tableId,
        url: Feng.ctxPath + '/metadataCol/list?metadataId=' + metadataId,
        page: true,
        height: "full-158",
        cellMinWidth: 100,
        skin: "line",
        cols: MetadataCol.initColumn(),
        done: function (res, curr, count) {
            $('tr').css('background-color', '#ffffff')
            table_data = res.data;
        }
    });
    /**
     * 获取表格复选框内的值
     */
    var table_data = new Array();
    var ids = new Array();
    table.on('checkbox(' + MetadataCol.tableId + ')', function (obj) {
        // console.log(obj)
        if (obj.checked == true) {
            if (obj.type == 'one') {
                ids.push(obj.data.metadataColId);
            } else {
                for (var i = 0; i < table_data.length; i++) {
                    ids.push(table_data[i].metadataColId);
                }
            }
        } else {
            if (obj.type == 'one') {
                for (var i = 0; i < ids.length; i++) {
                    if (ids[i] == obj.data.metadataColId) {
                        ids.splice(i, 1);
                    }
                }
            } else {
                for (var i = 0; i < ids.length; i++) {
                    for (var j = 0; j < table_data.length; j++) {
                        if (ids[i] == table_data[j].metadataColId) {
                            ids.splice(i, 1);
                        }
                    }
                }
            }
        }
    });


    // 搜索按钮点击事件
    $('#btnSearch').click(function () {
        MetadataCol.search();
    });

    // 添加按钮点击事件
    $('#btnAdd').click(function () {

        MetadataCol.openAddDlg();

    });

});
